package service

import (
	"gitee.com/waterwx_admin/banking/domain"
	"gitee.com/waterwx_admin/banking/errs"
)

// *************面向接口编程*************
// *************服务层接口*************

// 服务层，定义一个服务层接口
type CustomerService interface {
	GetAllCustomers(string) ([]domain.Customer, *errs.AppError)
	GetCustomer(string) (*domain.Customer, *errs.AppError)
}

// 定义结构体，关联CustomerRepository接口
// DefaultCustomerService 默认的客户服务结构体
type DefaultCustomerService struct {
	repo domain.CustomerRepository
}

// 定义结构体的方法，使用s.repo.FindAll()接口的方法
// GetAllCustomers 默认的客户服务结构体方法
func (s DefaultCustomerService) GetAllCustomers(status string)([]domain.Customer, *errs.AppError)	  {	
	if status == "active" {
		status = "1"
	}else if status == "inactive" {
		status = "0"
	}else {
		status = ""
	}
	return s.repo.FindAll(status)
}

func (s DefaultCustomerService) GetCustomer(id string)(*domain.Customer, *errs.AppError)	  {
	return s.repo.ById(id)
}

// 辅助函数，作用：创建DefaultCustomerService服务
func NewDefaultCustomerService(repository domain.CustomerRepository) DefaultCustomerService {
	return DefaultCustomerService{repository}
}